package ar.uba.is2.ec.trmanager;

import java.util.List;

import org.apache.log4j.Logger;

import ar.uba.is2.common.mensaje.DatoSensado;
import ar.uba.is2.common.mensaje.Mensaje;
import ar.uba.is2.common.mensaje.Receptor;
import ar.uba.is2.ec.matem.dao.MedicionDao;
import ar.uba.is2.ec.matem.modelo.Medicion;

public class ReceptorPersistenciaMensaje implements Receptor {

	Logger log = Logger.getLogger(ReceptorPersistenciaMensaje.class);
	private MedicionDao dao;
	private static long ID_MEDICION;
	
	public ReceptorPersistenciaMensaje(MedicionDao dao) {
		this.dao = dao;
	}
	
	public void recibirMensaje(Mensaje mensaje) {
		List<DatoSensado> datos = mensaje.getDatos();
		for (DatoSensado datoSensado : datos) {
			Medicion medicion = transformarAMedicion(datoSensado, mensaje);
			dao.guardar(medicion);
			log.debug("Se guarda la medicion " + medicion.getId() + "con exito. El id sensor es:" + medicion.getId());
		}
	}

	private Medicion transformarAMedicion(DatoSensado datoSensado,
			Mensaje mensaje) {
		
		Medicion medicion = new Medicion();

		medicion.setId(ID_MEDICION++);
		medicion.setNombreTr(mensaje.getOrigen().getNombre());
		medicion.setTipoMedicion(String.valueOf(datoSensado.getIdSensor()));
		medicion.setValor(datoSensado.getValor());
		medicion.setFechaMedicion(datoSensado.getFechaSensada());
		
		return medicion;
	}

}
